/**
 * 如果您的應用程式的規模越來越大，若您為每一個請求的處理撰寫一個Controller類別，很快的，您發現到Web應用程式中有越來越多的<br>
 * Controller 類別，而事實上當中的一些職責是可以組織在一個類別，例如與資料庫操作相關的 list()、add()、delete() 等方法，就可以組織在一個類別來加以管理。<br>
 * <br>
 * 您可以使用 AbstractController 類別的一個子類別：org.springframework.web.servlet.mvc.multiaction.MultiActionController。<br>
 * 它可以讓您在一個 Controller 類別中定義多個方法，並根據使用者的請求來呼叫當中的某個方法來執行。<br>
 * <br>
 * 通常在使用 MultiActionController 時會搭配使用 org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver 或是<br>
 * org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver，兩個類別都是根據一個請求參數，<br>
 * 以參數來決定要執行Controller類別中的哪一個方法，這邊先以 ParameterMethodNameResolver 為例<br>
 */

package controller.action.multi;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import com.e885.log.E885Logger;

/**
 * @author Eric.Kao(gau168.gau@msa.hinet.net)
 * @version 1.0
 * @company E885 Group
 * @copyright Copyright (c) 2001-2008
 */

public class MyMultiActionController extends MultiActionController
{
	private String viewPage;

	/**
	 * 當 action 的值為 list
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView list( HttpServletRequest request, HttpServletResponse response )
	{
		E885Logger.testLog.debug( "execute the method list()" );
		
		return new ModelAndView( getViewPage(), "executed", "list" );
	}

	/**
	 * 當 action 的值為 add
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView add( HttpServletRequest request, HttpServletResponse response )
	{
		E885Logger.testLog.debug( "execute the method add()" );
		
		return new ModelAndView( getViewPage(), "executed", "add" );
	}

	/**
	 * 當 action 的值為 delete
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView delete( HttpServletRequest request, HttpServletResponse response )
	{
		E885Logger.testLog.debug( "execute the method delete()" );
		
		return new ModelAndView( getViewPage(), "executed", "delete" );
	}

	/**
	 * @return the viewPage
	 */
	public String getViewPage()
	{
		return viewPage;
	}

	/**
	 * @param viewPage the viewPage to set
	 */
	public void setViewPage( String viewPage )
	{
		this.viewPage = viewPage;
	}
}
